#include "storage.h"

//创建节点
int create_node(LinkNode** node)
{
	(*node)=(LinkNode*)malloc(sizeof(LinkNode));
	if((*node)==NULL)
	{
		perror("create node error");
		return -1;
	}
	(*node)->next=NULL;
	(*node)->count=0;//存放节点的数量
	return 0;
}


//插入头部节点
int insert_head_node(LinkNode*base,int newfd)
{
	LinkNode* new;
	new=malloc(sizeof(LinkNode));
	memset(new, 0, sizeof(LinkNode));
	if(new==NULL)
	{
		perror("malloc new error");
		return -1;
	}
	//赋值
	new->acfd=newfd;
	//进行插入操作
	new->next=base->next;
	base->next=new;
	base->count++;
	return 0;
}

//查找所在的节点
int search_node(LinkNode* base,int newfd,LinkNode** newfd_node)
{
	LinkNode* temp_node=NULL;
	temp_node=base;
	while(temp_node->acfd!=newfd&&temp_node->next!=NULL)
	{
		temp_node=temp_node->next;
	}
	(*newfd_node)=temp_node;
	return 0;
}

//删除节点
int delete_node(LinkNode* base,int newfd)
{
	LinkNode* newfd_node=NULL;
	LinkNode* temp_node=NULL;
	LinkNode* pre=NULL;
	temp_node=base;
	while(temp_node->acfd!=newfd&&temp_node->next!=NULL)
	{
		pre=temp_node;//得到要删除的节点的前一个节点地址
		temp_node=temp_node->next;//得到要删除的节点地址
	}
	//进行删除操作
	pre->next=temp_node->next;
	free(temp_node);
	temp_node=NULL;
	return 0;
}

